@哈哈鱼
2年前 提问
1个回答

XSS 漏洞怎么防范

Andrew
2年前

防范xss漏洞的措施:

输入过滤

有时候需要多次过滤 ,例如 < scrip < script > t >过滤掉 < script > 后还是 < script >,需要注意多个过滤器的先后次序。当多个过滤器一起生效时,有可能后进行的过滤导致前面的过滤失效。

纯前端渲染

在纯前端渲染中,我们会明确的告诉浏览器:下面要设置的内容是文本(.innerText),还是属性(.setAttribute),还是样式(.style)等等。浏览器不会被轻易的被欺骗,执行预期外的代码了。

转义 HTML

如果拼接 HTML 是必要的,就需要采用合适的转义库,对 HTML 模板各处插入点进行充分的转义。

常用的模板引擎,如 doT.js、ejs、FreeMarker 等,对于 HTML 转义通常只有一个规则,就是把 & < > " ' / 这几个字符转义掉,确实能起到一定的 XSS 防护作用。

标签和属性基于白名单过滤

对于副文本编辑器来说,其产物本身就是 html 代码,所以没办法简单粗暴使用转义来处理,应该要对内容中的标签和属性,基于白名单进行过滤。(附 XSS 黑名单:DOM 中的内联事件监听器如onclick等、<a>标签的href属性、<script>标签、css 中的url功能)